package es.albarregas.dao;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;

import es.albarregas.pojo.Categoria;
import es.albarregas.pojo.Coleccion;

public class ColeccionesDAO extends ConexionDAO {

    private static final String INSERT_STATEMENT = "insert into colecciones (Codigo,Nombre) values(?,?);";

    private static final String DELETE = "delete from colecciones where Codigo=?";

    private int error = 1;

    public Collection<Coleccion> leerColeccion(String clausulaWhere) {
	Collection<Coleccion> lista = new ArrayList<Coleccion>();
	try {
	    getConexion();
	    estamento = conexion.createStatement();
	    resultado = estamento
		    .executeQuery("SELECT Codigo, Nombre FROM colecciones "
			    + clausulaWhere);
	    while (resultado.next()) {
		Coleccion coleccion = new Coleccion();
		coleccion.setCodigo(resultado.getString("Codigo"));
		coleccion.setNombre(resultado.getString("nombre"));

		lista.add(coleccion);
	    }
	} catch (SQLException ex) {
	    ex.printStackTrace();
	} finally {
	    cerrar();
	}
	System.out.println("Coleccion en CategoriasDAO " + lista.isEmpty());
	return lista;

    }

    public int crearColeccion(Coleccion coleccion) {

	int codigoSQL = 0;

	try {
	    getConexion();
	    estamento = conexion.createStatement();

	    preparada = conexion.prepareStatement(INSERT_STATEMENT);

	    preparada.setString(1, coleccion.getCodigo());
	    preparada.setString(2, coleccion.getNombre());

	    preparada.executeUpdate();
	} catch (SQLException ex) {
	    ex.printStackTrace();
	    codigoSQL = ex.getErrorCode();
	    error = ex.getErrorCode();
	} finally {
	    cerrar();
	}

	return codigoSQL;

    }

    public int actualizarColeccion(Coleccion coleccion,String codigoAntiguo) {

	String UPDATE = "update colecciones set Nombre=?,Codigo=? where Codigo=?";

	int codigoSQL = 0;

	try {
	    getConexion();
	    preparada = conexion.prepareStatement(UPDATE);

	    preparada.setString(1, coleccion.getNombre());
	    preparada.setString(2, coleccion.getCodigo());
	    preparada.setString(3, codigoAntiguo);

	    preparada.executeUpdate();
	} catch (SQLException ex) {
	    codigoSQL = ex.getErrorCode();
	    ex.printStackTrace();
	} finally {
	    cerrar();
	}
	return codigoSQL;
    }

    public int eliminarColeccion(String codigo) {
	int codigoSQL = 0;
	try {
	    getConexion();
	    preparada = conexion.prepareStatement(DELETE);
	    preparada.setString(1, codigo);
	    preparada.executeUpdate();
	} catch (SQLException ex) {
	    codigoSQL = ex.getErrorCode();
	    ex.printStackTrace();
	} finally {
	    cerrar();
	}
	return codigoSQL;
    }

    public int getError() {
	return error;
    }

}
